<?php
/***********************************************************************
 * @package    IvanEngine
 * @subpackage Core
 * @author     Ivan <ivanzx@msn.com>
 * @created    2010-05-13
 ***********************************************************************/
if(defined("IVANENGINE_CORE_INTERFACE_BASE"))
	die("Redefinition macro in :".__FILE__."(".__LINE__.")");
define("IVANENGINE_CORE_INTERFACE_BASE", true);

require_once (dirname(__FILE__).'/Exception/Exception.php');

// base class of all sub class 
abstract class CBase 
{
	public function __construct() 
	{
		
	}
	
	public function __destruct()
	{
		
	}
    
    public function __clone()
    {
        return $this;
    }
    
	public function __call($method, $arguments)
	{
		throw new CException("Can not found the function: %s::%s(%s)", 
            get_class($this), $method, explode(',', $arguments));
	}
	
	public function __set($property, $value)
	{
        throw new CException("Cannot access or found the property: %s::%s(%s)", 
            get_class($this), $property, $value);
	}
	
	public function __get($property)
	{
		throw new CException("Cannot access or found the property: %s::%s", 
            get_class($this), $property);
	}
	
	public function __unset($property)
	{
		throw new CException("Cannot access protected property %s::%s", 
            get_class($this), $property);
	}
	
    public function __isset($property)
    {
        throw new CException("Cannot access protected property %s::%s", 
            get_class($this), $property);
    }
}

?>